#ifndef __FW_ENTITY_H__
#define __FW_ENTITY_H__

#include "Mesh.h"
#include "Texture.h"
#include "Shader.h"
#include "Define.h"
#include "Math.h"

/**
Game entity
Abstract methods:
->FWint Init()
->void Draw()
->void Destroy()
*/
class Entity
{
protected:
	Matrix m_LocalWorld;
public:
	Mesh *_Mesh;
	Texture *_Texture;
	Shader *_Shader;
	Vector3 Position;

	Vector3 Scale;
	Vector3 Rotate;
	Vector3 Translate;
	Entity();
public:
	virtual ~Entity();
	virtual FWint Init() = 0;
	virtual void Update(float deltaTime);
	virtual void Draw() = 0;
	virtual void Destroy() = 0;

	void SetRotateX(FWfloat);
	void SetRotateY(FWfloat);
	void SetRatatez(FWfloat);

	void SetScale(Vector3);
	void SetTranslate(Vector3);
};

#endif